# 列表
# 1.定义：是处理一组有序项目的数据结构。
# 2.格式：列表名=[元素1，元素2，元素3，元素4.，.]
# 注意：
# ①列表的所有元素放在一对中括号[]中，并使用逗号分隔开。
# ②一个列表中的数据类型可以各不相同
# ③列表也是可迭代对象

list = [1, 2, '3', 4]
print(list, type(list))  # <class 'list'>
print(list[2])
print(list[0:3])  # [1, 2, '3']
for i in list:
    print(i, end=" ")

# 列表的新增
# append() # 整体添加
li = ["one", "two", "three"]
li.append("four")
print()
print(li)  # ['one', 'two', 'three', 'four']

# extend() #分散添加 必须是可迭代对象，整形不是可迭代对象，因此不能添加整形数据
# li.extend(4) # 报错
li.extend("1234")
print(li)  # ['one', 'two', 'three', 'four', '1', '2', '3', '4']

# insert() # 在指定位置插入元素,指定位置如果有元素，原有元素后移
li.insert(4, "0")
print(li)  # ['one', 'two', 'three', 'four', '0', '1', '2', '3', '4']

li = [1, 2, 3]

# 修改元素
# 直接通过下标就可以修改
ls = [1, 2, 3, 4]
ls[1] = 'a'
print(ls)  # [1, 'a', 3, 4]

# 查找元素
# in 判断指定元素是否存在列表中，如果存在返回True，不存在返回False
# not in  判断指定元素是否存在列表中，如果存在返回False，不存在返回True

li = ['a', 'b', 'c', 'd']
print('a' in li)  # True
print('e' in li)  # False

# name_list = ['lisi','zhangsan','bingbing']
# while True:
#     name = input("请输入名称：")
#     if name in name_list:
#         print(f"{name}已经存在")
#     else:
#         print(f"{name}不存在，欢迎使用")
#         name_list.append(name)
#         break

# index 返回指定数据所在位置的下标，如果查找的数据不存在就会报错
# count 统计指定数据在当前列表出现的次数
# 跟字符串中的用法相同

# 列表的删除
# del
li = ['a', 'b', 'c']
del li[1]  # 删除b
print(li)
del li  # 删除li列表
# print(li) # 报错，已删除

# pop() 删除指定下标的数据 python3版本默认删除最后一个元素,下标不能超出范围
li = ['a', 'b', 'c']
# li.pop()
# print(li) # 删除最后一个元素
li.pop(1)
print(li)

# remove() 根据元素删除，如果元素不存在，会报错,如果有重复只会删除第一个找到的元素
li = ['a', 'b', 'c', 'a']
li.remove('a')
print(li)

# 排序
# sort 将列表按照特定顺序重新排序，默认从小到大
li = [1, 4, 2, 3]
li.sort()
print(li)

# reverse 将列表倒置（反过来）
li = [1, 4, 2, 3]
li.reverse()
print(li)

# 列表推导式
# 格式一：[表达式 for 变量 in 列表]
# 注意，in后边不仅可以放列表，还可以放range()及可迭代对象
li = [1, 2, 3, 4, 5, 6]
# li = [print(i*5) for i in li]

lis = []
# for i in range(1,6):
#     print(i)
#     lis.append(i)
[lis.append(i) for i in range(1, 6)]
print(lis)

# 格式二：[表达式 for 变量 in 列表 if 条件]
ll = []
# for i in range(1,11):
#     if i % 2 ==1:
#         print(i)
#         ll.append(i)
[ll.append(i) for i in range(1, 11) if i % 2 == 1]
print(ll)  # [1, 3, 5, 7, 9]

# 列表嵌套
# 含义：一个列表里边又有一个列表
li = [1, 2, 3, [4, 5, 6]]  # [4,5,6]是内层列表
print(li[2])  # 3
print(li[3])  # 取出整个列表[4,5,6]
print(li[3][0])  # 取出列表[4,5,6]中的元素4
